﻿/*c2. 使用事件机制，模拟实现一个闹钟功能。闹钟可以有嘀嗒（Tick）事件和响铃（Alarm）两个事件。
 在闹钟嘀嗒运行时或者响铃时，在控制台显示提示信息。*/
using System;
using System.Threading;

class Clock
{
    // 定义嘀嗒事件
    public event EventHandler Tick;
    // 定义响铃事件
    public event EventHandler Alarm;

    // 触发嘀嗒事件的方法
    protected virtual void OnTick(EventArgs e)
    {
        Tick?.Invoke(this, e);
    }

    // 触发响铃事件的方法
    protected virtual void OnAlarm(EventArgs e)
    {
        Alarm?.Invoke(this, e);
    }

    // 模拟闹钟运行的方法
    public void Run()
    {
        // 模拟闹钟嘀嗒的过程
        for (int i = 0; i < 10; i++)
        {
            // 触发嘀嗒事件
            OnTick(EventArgs.Empty);
            Thread.Sleep(1000); // 每秒钟嘀嗒一次
        }

        // 触发响铃事件
        OnAlarm(EventArgs.Empty);
    }
}

class Program
{
    static void Main(string[] args)
    {
        Clock clock = new Clock();

        // 订阅嘀嗒事件
        clock.Tick += (sender, e) => Console.WriteLine("嘀嗒...");
        // 订阅响铃事件
        clock.Alarm += (sender, e) => Console.WriteLine("响铃！！！");

        // 运行闹钟
        clock.Run();

        Console.ReadLine();
    }
}
